home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / ae / code / ax3.00 / await_logon.c < prev    next >
Encoding:
C/C++ Source or Header  |  1980-01-03  |  10.6 KB  |  442 lines

  1. #include "bbs.h"
  2. extern long Startup_Time,Time_limit;
  3. extern char ReservedName[];
  4. extern int QuickFlag;
  5. extern UBYTE ShutDownFlag;
  6. extern char lang[];
  7. void CallerIDLog(int opt);
  8. extern int RingCount;
  9.  
  10. static void ReserveForUser(void)
  11. {
  12.  int stat;
  13.  char str[34];
  14.  struct User TUser;
  15.  struct UserKeys TUserkeys;
  16.  
  17. Redo:
  18.  AEPutStr("\r\nEnter username to reserve for: ");
  19.  stat=LineInput("",str,30,KEYBOARD_TIMEOUT);
  20.  if(stat<0||str[0]=='\0')     return;
  21.  stat=ChooseAName(str,&TUser,&TUserkeys,0);
  22.  if(stat<FAILURE)     return;
  23.  if(stat==FAILURE)    goto Redo;
  24.  strcpy(ReservedName,TUserkeys.UserName);
  25. }
  26.  
  27.  
  28. char ID_DATE[20];
  29. char ID_TIME[20];
  30. char ID_NMBR[50];
  31. char ID_NAME[50];
  32.  
  33.  
  34. static int do_baud(ULONG baudrate)
  35. {
  36.     Online_Baud  = baudrate;
  37.     Online_BaudR = Cmds->OpeningBaud;
  38.  
  39.     IO_Flags[IOFLAG_SER_OUT] = 1;
  40.     IO_Flags[IOFLAG_SCR_OUT] = 1;
  41.  
  42.     if(Cmds->AcLvl[LVL_VARYING_LINK_RATE]==1) SetBaud(baudrate);
  43.     ConPutStr("\014");
  44.     time(&Time_connect);
  45.     return(REMOTE_LOGON);
  46. }
  47.  
  48.  
  49.  
  50.  
  51. int CallerID=0;
  52.  
  53. int Await_Logon(void)
  54. {
  55.  int stat,ch,c;
  56.  int input;
  57.  int RCount;
  58.  ULONG sig;
  59.  char string[81];
  60.  
  61.     sprintf(string,ctime(&Startup_Time));
  62.     string[strlen(string)-1]='\0';
  63.     StatMessage(48,3,string);
  64.  
  65.     strcpy(ID_DATE,"");
  66.     strcpy(ID_NAME,"");
  67.     strcpy(ID_TIME,"");
  68.     strcpy(ID_NMBR,"");
  69.  
  70.     StatChatFlag();
  71.     SetEnvStat(ENV_AWAITCONNECT);
  72.     strcpy(lang,"txt");
  73.     ClearProtocol();
  74.     DisplayAwaitMsg();
  75.  
  76.     FOREVER    {
  77.  
  78.         Time_limit=1800;
  79.         Time_holder=0;
  80.         RCount=RingCount;
  81.  
  82.         if(TrapDoor) goto GO;
  83.         AWAITLOGON=1;
  84.  
  85.         Cycle_The_Display();
  86.          CheckIconifyMsg();
  87.         ServerCmd=0;
  88.         CheckDoorMsg(0);
  89.         AWAITLOGON=0;
  90.  
  91.         if(ServerCmd)
  92.             {
  93.             strcpy(User.Name,"");
  94.             strcpy(User.Location,"");
  95.  
  96.             switch(ServerCmd)
  97.                 {
  98. case SV_RESERVE:        if(ReservedName[0]!='\0')
  99.                     {
  100.                     ReservedName[0]='\0';
  101.                     DisplayAwaitMsg();
  102.                     SetEnvStat(ENV_AWAITCONNECT);
  103.  
  104.                     } else {
  105.  
  106.                     IO_Flags[IOFLAG_SER_IN]=0;
  107.                     IO_Flags[IOFLAG_SER_OUT]=0;
  108.                     IO_Flags[IOFLAG_SCR_OUT]=1;
  109.                     IO_Flags[IOFLAG_KBD_IN]=1;
  110.                     Time_limit=3600L;
  111.                     Whence_The_Logon=LOCAL_LOGON;
  112.                     IntDoReset(Sopt->OffHook);
  113.                     ConPutStr(" p\014");
  114.                     ReserveForUser();
  115.                     Reset_System(1);
  116.                     IO_Flags[IOFLAG_SER_IN]=1;
  117.                     IO_Flags[IOFLAG_SCR_OUT]=0;
  118.                     Whence_The_Logon=AWAIT_LOGON;
  119.                     strcpy(User.Name,ReservedName);
  120.                     strcpy(User.Location,"");
  121.                     SetEnvStat(ENV_RESERVE);
  122.                     DisplayAwaitMsg();
  123.                     }
  124.                                    break;
  125.          case SV_ACCOUNTS:
  126.                               IO_Flags[IOFLAG_SER_IN]=0;
  127.                         IO_Flags[IOFLAG_SER_OUT]=0;
  128.                         IO_Flags[IOFLAG_SCR_OUT]=1;
  129.                         IO_Flags[IOFLAG_KBD_IN]=1;
  130.                         IntDoReset(Sopt->OffHook);
  131.                         ConPutStr(" p\014");
  132.                         Time_limit=3600L;
  133.                         Whence_The_Logon=LOCAL_LOGON;
  134.                         Edit_Accounts();
  135.                         Reset_System(1);
  136.                         IO_Flags[IOFLAG_KBD_IN]=1;
  137.                         IO_Flags[IOFLAG_SER_IN]=1;
  138.                         if(IO_Flags[IOFLAG_FIL_IN])
  139.                             {
  140.                             IO_Flags[IOFLAG_FIL_IN]=0;
  141.                             }
  142.                         IO_Flags[IOFLAG_SCR_OUT]=0;
  143.                         IO_Flags[IOFLAG_SER_OUT]=0;
  144.                         Whence_The_Logon=AWAIT_LOGON;
  145.                               SetEnvStat(ENV_AWAITCONNECT);
  146.                               DisplayAwaitMsg();
  147.                   break;
  148.           case SV_NODEOFFHOOK: /* F10 - Exit Off Hook */
  149.                         IntDoReset(Sopt->OffHook);
  150.                         Delay(30L);
  151.                         ShutDown("!"); break;
  152.         case SV_EXITNODE: /* F9 - Exit On Hook */
  153.                         Delay(30L);ShutDown("!"); break;
  154.           case SV_AESHELL:
  155.                SetEnvStat(ENV_AWAITCONNECT); break;
  156.           case SV_INSTANT: goto GO; break;
  157.         
  158.          default: return(ServerCmd);
  159.                            }
  160.  
  161.                  }
  162.  
  163.  
  164.  
  165.         Delay(30L);
  166.  
  167.         CheckRexxMessage();
  168.         if(ShutDownFlag)    return(SUSPEND_LOGON);
  169.  
  170.      if(CheckCon()) {
  171. strcpy(User.Name,""); strcpy(User.Location,"");
  172.          c=GetConKey(1L);
  173.             if(c==155) {
  174.              ch=GetConKey(1L);
  175.                 c=GetConKey(1L);
  176.                 if(c==126) {
  177.                  switch(ch) {
  178.                      case '?':               /* Help - ToggleStat */
  179.                          ToggleStatusDisplay();
  180.                             break;
  181.                         case '9':               /* F10 - Exit Off Hook */
  182.                             IntDoReset(Sopt->OffHook);
  183.                             Delay(30L);
  184.                             ShutDown("!");
  185.                         case '8':               /* F9 - Exit On Hook */
  186.                             ShutDown("!");
  187.                             case '7':           /* F8 - Reprogram modem */
  188.                             ReInitModem();
  189.                             Reset_System(1);
  190.                             continue;
  191.                         case '6':               /* F7 - Toggle Chat Bit */
  192.                             if(SySChat==1)    SySChat=0;
  193.                             else            SySChat=1;
  194.                             StatChatFlag();
  195.                             break;
  196.                         case '5':               /* F6 - Account Editting */
  197.                          IO_Flags[IOFLAG_SER_IN]=0;
  198.                             IO_Flags[IOFLAG_SER_OUT]=0;
  199.                             IO_Flags[IOFLAG_SCR_OUT]=1;
  200.                             IO_Flags[IOFLAG_KBD_IN]=1;
  201.                             IntDoReset(Sopt->OffHook);
  202.                             ConPutStr(" p\014");
  203.                          Time_limit=3600L;
  204.                             Whence_The_Logon=LOCAL_LOGON;
  205.                               Load_Account(1,&User,&User_keys);
  206.                             Edit_Accounts();
  207.                             Reset_System(1);
  208.                             IO_Flags[IOFLAG_KBD_IN]=1;
  209.                             IO_Flags[IOFLAG_SER_IN]=1;
  210.                             if(IO_Flags[IOFLAG_FIL_IN])
  211.                              IO_Flags[IOFLAG_FIL_IN]=0;
  212.                             IO_Flags[IOFLAG_SCR_OUT]=0;
  213.                             IO_Flags[IOFLAG_SER_OUT]=0;
  214.                             Whence_The_Logon=AWAIT_LOGON;
  215.                               SetEnvStat(ENV_AWAITCONNECT);
  216.                                   DisplayAwaitMsg();
  217.                             continue;
  218. //                        case '4':               /* F5 - Local Shell */
  219. //                            (void)LRemoteShell();
  220. //                            break;
  221.                      case '3':
  222.                             if(ReservedName[0]!='\0') {
  223.                              ReservedName[0]='\0';
  224.                                 DisplayAwaitMsg();
  225.                             } else    {
  226.                              IO_Flags[IOFLAG_SER_IN]=0;
  227.                                 IO_Flags[IOFLAG_SER_OUT]=0;
  228.                                 IO_Flags[IOFLAG_SCR_OUT]=1;
  229.                                 IO_Flags[IOFLAG_KBD_IN]=1;
  230.                                 Time_limit=3600L;
  231.                                 Whence_The_Logon=LOCAL_LOGON;
  232.                                 IntDoReset(Sopt->OffHook);
  233.                                 ConPutStr(" p\014");
  234.                              ReserveForUser();
  235.                                 Reset_System(1);
  236.                                 IO_Flags[IOFLAG_SER_IN]=1;
  237.                                 IO_Flags[IOFLAG_SCR_OUT]=0;
  238.                                 Whence_The_Logon=AWAIT_LOGON;
  239.                                     
  240.                                    DisplayAwaitMsg();
  241.                             }
  242.                             continue;
  243.                         case '2':           /* F3 - Instant Remote Logon */
  244.                             goto GO;
  245.                         case '1':           /* F2 - Local Login */
  246.                             strcpy(ConnectString,"F2_LOCAL");
  247.                             (void)StatClearTime();
  248.                             IO_Flags[IOFLAG_SER_IN]=0;
  249.                             IO_Flags[IOFLAG_SER_OUT]=0;
  250.                             IO_Flags[IOFLAG_SCR_OUT]=1;
  251.                          IO_Flags[IOFLAG_KBD_IN]=1;
  252.                             ConPutStr(" p\014");
  253.                             time(&Time_connect);
  254.  
  255.                             Online_Baud=Cmds->OpeningBaud;
  256.                             Online_BaudR=Cmds->OpeningBaud;
  257.                             IntDoReset(Sopt->OffHook);
  258.                             return(LOCAL_LOGON);
  259.                      case '0':           /* F1 - Sysop Login */
  260.                             strcpy(ConnectString,"SYSOP_LOCAL");
  261.                             (void)StatClearTime();
  262.                             IO_Flags[IOFLAG_SER_IN]=0;
  263.                             IO_Flags[IOFLAG_SER_OUT]=0;
  264.                             IO_Flags[IOFLAG_SCR_OUT]=1;
  265.                             IO_Flags[IOFLAG_KBD_IN]=1;
  266.                          AnsiColor=1;
  267.                             QuickFlag=1;
  268.                             ConPutStr(" p\014");
  269.                             time(&Time_connect);
  270.                             Online_Baud=Cmds->OpeningBaud;
  271.                             Online_BaudR=Cmds->OpeningBaud;
  272.  
  273.                             IntDoReset(Sopt->OffHook);
  274.                          return(SYSOP_LOGON);
  275.                     }      /* end switch */
  276.                 }          /* end if ch=126 */
  277.             }              /* end if c==125 */
  278.         }                  /* end if CheckCon() */
  279.  
  280.  
  281.  
  282.         if(CheckSer())
  283.         {
  284.         strcpy(User.Name,"");
  285.         strcpy(User.Location,"");
  286.          IO_Flags[IOFLAG_SER_IN]=1;
  287.             IO_Flags[IOFLAG_SER_OUT]=0;
  288.  
  289.  
  290.         if(!(strcmp(Cmds->SerDev,"nullmodem.device")))
  291.             {
  292.             SerPutStr("\r");
  293.             strcpy(string,"CONNECT 19200");
  294.             goto KEWL;
  295.             }
  296.  
  297.         while(RCount)
  298.             {
  299.             LineInput("",string,80,5L);
  300.             if((stat=StringCompare(string,Cmds->MRing))==FAILURE) break;
  301.             RCount -=1;
  302.             }
  303.     
  304.         if(RCount) continue;
  305.  
  306.  
  307.         if(Sopt->Toggles[15] || Sopt->Toggles[16])
  308.             {
  309.             LineInput("",ID_DATE,14,5L);
  310.             LineInput("",ID_DATE,14,5L);
  311.             LineInput("",ID_TIME,14,5L);
  312.             LineInput("",ID_NMBR,40,5L);
  313.             if(Sopt->Toggles[16]) LineInput("",ID_NAME,40,5L);
  314.             CallerIDLog(1);
  315.             }
  316.  
  317.         /* OTHERWISE EQUAL, ANSWER AND SET BAUDS */
  318.  
  319. GO:
  320.         StatClearTime();
  321.  
  322.         IO_Flags[IOFLAG_SER_IN]=1;
  323.         IO_Flags[IOFLAG_SER_OUT]=0;
  324.  
  325.         if(!TrapDoor)
  326.             {
  327.  
  328.             SerPutStr(Cmds->MAnswer);
  329.             SerPutChar("\r");
  330.             input=LineInput("",string,80,40L);
  331.             if(input==TIMEOUT) goto Timedout;
  332.             input=LineInput("",string,80,40L);
  333.  
  334.             } else {
  335.  
  336.             strcpy(string,TrapConnect);
  337.             }
  338.  
  339. KEWL:
  340.         strcpy(ConnectString,string);
  341.  
  342.         if(!TrapDoor)
  343.             {
  344.             if(input==TIMEOUT) goto Timedout;
  345.             }
  346.           
  347.         if(!strnicmp(string,"CONNECT ",8)) return(do_baud(atol(&string[8])));
  348.  
  349.         Online_Baud=Online_BaudR;
  350.         SetEnvStat(ENV_AWAITCONNECT);
  351.  
  352.         goto Timedout; 
  353.  
  354.         } else {
  355.  
  356.           continue;
  357.  
  358.         }
  359.  
  360.  
  361.         /* ELSE RESET, PURGE AND CONTINUE THE LOOP */
  362. Timedout:
  363.         DropDTR();
  364.         Delay(25L);
  365.  
  366.         if(Cmds->AcLvl[LVL_VARYING_LINK_RATE]==1)
  367.             {
  368.              SetBaud(Cmds->OpeningBaud);
  369.                 Delay(25L);
  370.             }
  371.          IntDoReset(Cmds->MReset);
  372.          SerPutChar("\r");
  373.         Delay(25L);
  374.         PurgeLine();
  375.         }
  376.  
  377.     return(SUCCESS);
  378. }
  379.  
  380.  
  381. void Server(int Code)
  382. {
  383.    switch(Code)
  384.    {
  385.      case SV_SYSOPLOG:
  386.           strcpy(ConnectString,"SYSOP_LOCAL");
  387.         (void)StatClearTime();
  388.         IO_Flags[IOFLAG_SER_IN]=0;
  389.         IO_Flags[IOFLAG_SER_OUT]=0;
  390.         IO_Flags[IOFLAG_SCR_OUT]=1;
  391.         IO_Flags[IOFLAG_KBD_IN]=1;
  392.         AnsiColor=1;
  393.         QuickFlag=1;
  394.         ConPutStr(" p\014");
  395.         time(&Time_connect);
  396.         Online_Baud=Cmds->OpeningBaud;
  397.         Online_BaudR=Cmds->OpeningBaud;
  398.         IntDoReset(Sopt->OffHook);
  399.           ServerCmd=SYSOP_LOGON;
  400.           break;
  401.      case SV_LOCALLOG:
  402.     strcpy(ConnectString,"F2_LOCAL");
  403.                         
  404.                         (void)StatClearTime();
  405.                         IO_Flags[IOFLAG_SER_IN]=0;
  406.                         IO_Flags[IOFLAG_SER_OUT]=0;
  407.                         IO_Flags[IOFLAG_SCR_OUT]=1;
  408.                         IO_Flags[IOFLAG_KBD_IN]=1;
  409.                         ConPutStr(" p\014");
  410.                         time(&Time_connect);
  411.                         Online_Baud=Cmds->OpeningBaud;
  412.                         Online_BaudR=Cmds->OpeningBaud;
  413.                         IntDoReset(Sopt->OffHook);
  414.                         ServerCmd=LOCAL_LOGON;
  415.           break;
  416.      case SV_ACCOUNTS:
  417.           ServerCmd=SV_ACCOUNTS; break;
  418.      case SV_CHAT:
  419.           ServerCmd=SV_CHAT; break;
  420.      case SV_EXITNODE:
  421.           ServerCmd=SV_EXITNODE; break;
  422.      case SV_NODEOFFHOOK:
  423.           ServerCmd=SV_NODEOFFHOOK; break;
  424.      case SV_INITMODEM:
  425.           ServerCmd=0;ReInitModem();Reset_System(0);IO_Flags[IOFLAG_KBD_IN]=0;IO_Flags[IOFLAG_SCR_OUT]=0;break;
  426.      case SV_INSTANT:
  427.           ServerCmd=SV_INSTANT; break;
  428.      case SV_RESERVE:
  429.           ServerCmd=SV_RESERVE; break;
  430.      case SV_CHATTOGGLE:
  431.           ServerCmd=0; if(SySChat) SySChat=0; else SySChat=1;
  432.           StatChatFlag();
  433.           break;
  434.      case SV_QUIETNODE:
  435.           ServerCmd=0; if(QuietNode) QuietNode=0; else QuietNode=1;
  436.           SendQuietFlag(QuietNode); break;
  437.      case SV_AESHELL:
  438.           ServerCmd=SV_AESHELL; break;
  439.    }
  440. }
  441.  
  442.